iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 7
0
自我挑戰組

Codewar 進進出出 JS/Ruby系列 第 7

找到單身狗

  • 分享至 

  • xImage
  •  

題目:
(6 級) Find the odd int
給予一組整數的陣列,找到出現次數為奇數的數字。

範例:

[20,1,-1,2,-2,3,3,5,5,1,2,4,20,4,-1,-2,5] => 5
[1,1,2,-2,5,2,4,4,-1,-2,5]                => -1
[20,1,1,2,2,3,3,5,5,4,20,4,5]             => 5
[10]                                      => 10
[1,1,1,1,1,1,10,1,1,1,1]                  => 10

思考方式:

  1. 先把陣列依照數字大小進行排列
  2. 比對每個數字與下一個數字是否相同
  3. 相同的話計算數字就加 1
  4. 如果計算結果為奇數則回傳該數字

Ruby 解法:

def find_it(seq)
  # 把每個陣列中的數字拿出來
  seq.each do |n|
	
    # 如果該數字在陣列中的出現次數為奇數
    # 回傳該數字
    return n if seq.count(n).odd?
  end
end

JavaScipt 解法:

function findOdd(A) {
  // 先做變數 result 準備存找到的結果
  let result;
	
  // 計算次數設定為 1 表示數字本身也要算 1 個
  let count = 1;

  // 把陣列的數字依照大小排序
  arr = A.sort();

  for (let i = 0; i < arr.length; i++) {
    // 跑迴圈比對當下的數字是否與下一個數字相同
    if (arr[i] === arr[i+1]) {
      // 相同的話計算次數加 1
      count++;
    } else {
      // 若不同則檢查目前計算次數是否為奇數
      if (count % 2 != 0) {
        // 若為奇數把該數字存入變數 result
        result = arr[i];
        // 並且終止迴圈
        break;
      }
      // 不是奇數就把計算次數 reset 再繼續跑迴圈做比對
      count = 1;
    }
  }
	
  // 最後回傳找到的結果
  return result;
}

上一篇
不要結巴!!!
下一篇
前前後後來來回回
系列文
Codewar 進進出出 JS/Ruby30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言